package com.shangma.util;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @author: ShangMa
 * @className: JedisUtils
 * @description:
 * @date: 2023/4/3 16:37
 * @since: 11
 */
// jedis连接池的工具类
public class JedisUtils {

    private static JedisPool jedisPool;

    private static JedisPoolConfig jedisPoolConfig;

    static {
        // 静态代码块  在类加载时执行，类只加载一次

        // 读取类路径下的文件
        InputStream in =
                JedisUtils.class.getClassLoader().getResourceAsStream("jedis.properties");

        // 创建文件对象
        Properties properties = new Properties();
        try {
            // 加载文件
            properties.load(in);
            jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));//最大的连接数量
            jedisPoolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));//最大的空闲数
            jedisPool = new JedisPool(jedisPoolConfig,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
        } catch (IOException e) {
            e.printStackTrace();
        }




    }


    // 从连接池中获取jedis
    public static Jedis getJedis(){
        Jedis jedis = jedisPool.getResource();
        return jedis;
    }


    /**
     * 释放资源（归还连接）
     */
    public static void close(Jedis jedis){
        if (jedis != null){
            jedis.close();
        }
    }

}
